Javascript物件與函式建構子—其他語言的建構子
2021-12-02 Thu
| 基於類的(Java) | 基於原型的(JavaScript) |
|---|---|
| 類和實例是不同的事物 | 所有物件均為實例。 |
| 通過類定義來定義類 | 通過建構函式來產生實體。 |
| 通過 new 操作符來建立物件 | 相同 |
| 通過類定義來定義現存類的子類,從而建構物件的層級結構 | 通過將一個物件作為原型指定關聯於建構函式來建構物件的層級結構 |
| 遵循類鏈繼承屬性 | 遵循原型鏈繼承屬性。 |
| 類定義指定類的所有實例的所有屬性。無法在運行時添加屬性。 | 建構函式或原型指定初始的屬性集。允許動態地向單個的物件或者整個物件集中添加屬性,或者從中移除屬性。 |
Javascript 建立物件的方式
第一種物件實字法(literal object)
const obj = {};
obj.age = 0;
obj.job = "";第二種函式建構子(constructor function)
function obj(age,job){
this.age = age;
this.job = job;
}
var John = new obj(17,"student");
console.log(John)第三種(或歸類在第二種)內建物件函式建構子
const obj = new Object();
obj.age =0;
obj.job ="";第四種(或歸類在第二種) ES6 的 class 語法糖
class ObjClass {
constructor(age,job){
this.age = age;
this.job = job;
}
}
const obj = new Obj(2,"student");各種語言的物件和建構子(Object constructor)
Java 的物件和函式建構子
class Playground {
public static void main(String[ ] args) { //程式進入點
ObjClass John = new ObjClass(17,"Student");
System.out.println("John的Age "+ John.age);
System.out.println("John的Job "+ John.job);
}
}
class ObjClass {
int age ;
String job;
public ObjClass (int num,String str){
age = num;
job = str;
}
}python 的物件和函式建構子
class Obj:
def __init__(self, age, job):
self.age = age
self.job = job
John = Obj(17,"student")
print(John.age)
print(John.job)C#的物件和函式建構子
using System;
public class Program
{
public static void Main() //程式進入點
{
Obj John = new Obj(19,"student");
Console.WriteLine(John.age);
Console.WriteLine(John.job);
}
}
public class Obj
{
public int age;
public string job;
public Obj(int num,string str){
age = num;
job = str;
}
}參考資料: